home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1997 #3
/
Amiga Plus CD - 1997 - No. 03.iso
/
pd
/
programmierung
/
alienbreed3d2_src
/
cheesesauce
/
serial.s
< prev
next >
Wrap
Text File
|
1997-01-31
|
2KB
|
119 lines
SECTION Proggy,CODE
SERPER equ $032
SERDATR equ $018
SERDAT equ $030
INTREQ equ $09C
INTENA equ $09A
INTENAR equ $01C
DMACON equ $096
BPLCON0 equ $100
BPLCON1 equ $102
COL0 equ $180
OPENLIB equ -552
CLOSELIB equ -414
WM MACRO
\@waituntilpressed:
btst #6,$bfe001
bne.s \@waituntilpressed
\@waituntilreleased:
btst #6,$bfe001
beq.s \@waituntilreleased
ENDM
;first we get the command line
move.b (a0),commandline
;then we must turn off the system
move.l 4.w,a6 ;get execbase
move.l #gfxname,a1 ;point to 'graphics.library'
moveq #0,d0
jsr OPENLIB(a6)
move.l d0,a1
move.l 38(a1),old ;store workbench copper list
move.l 4.w,a6
jsr CLOSELIB(a6)
move.l #$dff000,a6 ;get custom address
move.w #$87c0,DMACON(a6)
move.w #$0020,DMACON(a6)
move.w INTENAR(a6),saveinters
move.w #$7fff,INTENA(a6)
move.l #copper,$dff080
move.w #184,SERPER(a6) ;19200 baud, 8 bits, no parity
move.w #$f00,COLOUR
WM
move.b commandline,d1 ;get command line
cmp.b #"r",d1
beq.s RECIEVEMODE
SENDMODE:
move.w #$0ff,COLOUR
move.l #senddata,a0
move.l #recdata,a1
move.l (a0)+,d0
bsr SENDFIRST
move.l d0,(a1)+
move.l (a0)+,d0
bsr SENDFIRST
move.l d0,(a1)+
move.l (a0)+,d0
bsr SENDFIRST
move.l d0,(a1)+
move.w #$0f0,COLOUR
bra.s ENDOFPROG
RECIEVEMODE:
move.w #$ff0,COLOUR
move.l #senddata,a0
move.l #recdata,a1
move.l (a0)+,d0
bsr RECEIVEFIRST
move.l d0,(a1)+
move.l (a0)+,d0
bsr RECEIVEFIRST
move.l d0,(a1)+
move.l (a0)+,d0
bsr RECEIVEFIRST
move.l d0,(a1)+
move.w #$00f,COLOUR
ENDOFPROG:
WM
move.w #$000,COLOUR
;this little bit of code restores the system
;first we must wait and make sure any serial transfer has finished
;(we don't want the system jumping in and stopping things)
SERFINWAIT:
btst #4,SERDATR(a6)
beq.s SERFINWAIT
move.l old,$dff080 ;restore the workbench copper list
move.w #$8020,DMACON(a6)
move.w saveinters,d0
or.w #$c000,d0
move.w d0,INTENA(a6)
clr.w $dff0a8
clr.w $dff0b8
clr.w $dff0c8
clr.w $dff0d8
rts
include "serial.inc"
old: dc.l 0
saveinters: dc.w 0
senddata: dc.b "Hello World",0
even
recdata: ds.b 100
gfxname: dc.b "graphics.library",0
commandline: dc.b 0
SECTION Copper_List,CODE_C
;here is our copper list (what there is of it)
copper:
dc.w BPLCON0,$0201 ;turn of all bitplanes
dc.w BPLCON1,0
dc.w COL0
COLOUR: dc.w 0
dc.w $ffff,$fffe